//--Khai bao thu vien vector
#include "vector"
using namespace std;
//--
#pragma once

class Graph
{
public:
	//--Ham doc file
	void GetData(char *filename);
	//--
	//--Ham FindHamiltonPath : tim chu trinh Hamilton
	bool FindHamiltonPath(int nCount, int x, vector<int> &path);
	//--
	//--Ham HamiltonPath : tra ve danh sach cac dinh trong chu trinh Hamilton
	bool HamiltonPath();
	//--
	//--Ham Check_x_to_i : kiem tra tu x toi i
	bool Check_x_to_i(int x, int i);
	//--
	//--Ham xuat man hinh
	void OutScreen();
	//--
	//--Ham ghi file
	void WriteData(char *filename, bool flag);
	//--
protected:
	//--Input : Dinh xuat phat : k
	int k;
	//--
	//--Input : So dinh cua do thi : N
	int N;
	//--
	//--Input : Ma tran ke cua do thi : A
	vector < vector<int> >A;
	//--
	//--Input : Mang luu duong di : path
	vector <int> paths;
	//--
	//--Input : Mang luu cac dinh : Labels
	vector <int> Labels;
	//--
	//--Input : Chieu dai chu trinh : Weight
	int weight;
	//--
};